﻿using HCQ2_Model;
using HCQ2_Model.Data;
using HCQ2_Model.Pay;
using HCQ2_Model.ShoppingCart;
using HCQ2_Model.ViewModel.VR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HCQ2_IBLL
{
    public partial interface IT_VRShoppingCartBLL
    {
        /// <summary>
        /// 获取用户购物车信息
        /// </summary>
        /// <param name="UserId"></param>
        /// <returns></returns>
        UserShoppingCart GetUserShoppingCart(int UserId);

        /// <summary>
        /// 获取用户购物车商品信息
        /// </summary>
        /// <param name="UserId">用户ID</param>
        /// <param name="CommodityId">选中购物车商品ID</param>
        /// <returns></returns>
        List<T_DocumentInfo> ListUserShoppingCartCommodity(int UserId, int[] CommodityId);

        /// <summary>
        /// 获取用户购物车中商品已经被购买的
        /// </summary>
        /// <param name="UserId">用户ID</param>
        /// <param name="CommodityId">选中的购物车中商品ID</param>
        /// <returns></returns>
        List<T_VROrderDetail> ListUserPurchased(int UserId, int[] CommodityId);

        /// <summary>
        /// 获取用户购物车中商品已经被：下架、删除
        /// </summary>
        /// <param name="UserId">用户ID</param>
        /// <param name="CommodityId">选中购物车商品ID</param>
        /// <returns></returns>
        List<T_DocumentInfo> ListUserLowerShelfAndRemove(int UserId, int[] CommodityId);

        /// <summary>
        /// 获取选中商品总价
        /// </summary>
        /// <param name="CommodityId"></param>
        /// <returns></returns>
        Decimal GetSelectCommodityTotalMoney(int[] CommodityId);

        /// <summary>
        /// 获取选中商品中系统管理员发布的商品总价
        /// </summary>
        /// <param name="CommodityId">选中商品ID</param>
        /// <returns></returns>
        Decimal GetSelectSystemCommodityTotalMoney(int[] CommodityId);
        /// <summary>
        ///  判断用户是否加入购物车
        /// </summary>
        /// <param name="fileId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        int GetCartFile(int fileId, int userId);

        /// <summary>
        /// 获取选中文件进行“商品购买”的信息展示数据
        /// </summary>
        /// <param name="selectFileIdStr">选择文件的ID字符串，多个通过逗号分隔开</param>
        /// <returns></returns>
        List<ShoppingCartListModel> GetSelectFilePayInfo(string selectFileIdStr);

        /// <summary>
        /// 获取订单支付金额
        /// </summary>
        /// <param name="paymentAmountParams">请求参数</param>
        /// <returns></returns>
        OperationResult GetPaymentAmount(PaymentAmountParams paymentAmountParams);
    }
}
